Sqlite 数据库损坏的恢复 |
您所在的位置:网站首页 › image integrity check failed › Sqlite 数据库损坏的恢复 |
损坏原因: http://www.sqlite.org/lockingv3.html#how_to_corrupt 检查数据库损坏情况首先sqlite3 database_name进入数据库 然后运行命令 PRAGMA integrity_check; 如果数据库文件损坏就会报损坏的错误,如何数据库文件是完好的就会显示OK。 sqlite 命令 https://www.runoob.com/sqlite/sqlite-select.html SQlite database disk image is malformed数据表的损坏,一般原因: 数据表在读写的时候,设备突然断电、关机、软件闪退等情况下会造成数据库或表的损坏。 Sqlite3 导出损坏包中的数据客户的一张表中的数据丢失了,无法查看,一共35条附件数据 1、安装 Sqlite3安装步骤,菜鸟教程 安装成功 2、使用Sqlite 命令导出数据为sql文件 dump 命令 导出为 sql 文件使用如下命令: sqlite3 old.db .dump > newsfeed.sqlcmd 打开命令行,定位到数据库文件夹,使用上述命令,dump 成sql 用文本编辑器打开newsfeed.sql把文件拉倒最后面,我们可以看到 ROLLBACK; -- due to errors 把ROLLBACK;改成COMMIT; 用newsfeed.sql生成新的数据包使用如下命令生成新的数据库包 sqlite3 new.db < newsfeed.sql我们可以看到数据找回了31条 2、 加密结果库的数据找回客户反馈软件导出成果时出错,经过对数据的排查发现是 WYHCFJ 这张表中的 数据有损坏。 用上面的相同的方法, 1、DB Browser 打开加密的数据库 2、导出数据库中的数据为sql文件 3、利用sqlit3 命令将 sql 文件重新生成db文件 4、打开重新生成的db ,发现附件表中有420条附件 最大ID是420,证明原库中是从421开始出错的 5、打开原始db,我们从422开始查询 可以看到从422开始,数据没有错误,那么应该就只有421这条数据是错误的,我们验证下 6、在原始db中查询421的数据 我们发现这条数据是错误的 7、怎么跳过错误的数据,而将421之后的数据插入到新的库中? 这里我联结了新旧两个数据库,然后使用INSERT INTO SELECT 语句 利用DBMS联结新旧数据库 利用SQL语句插入数据 insert into WYHCFJ select * from hcjg00.WYHCFJ where F_ID > 421 插入数据成功将数据放回软件,验证成功!问题解决,排除掉了421的异常数据 3、不可挽回的损坏在数据恢复的时候,有时候会发现导出的 sql 文件的时候,会出现这样的情况 file is not a database 这种情况我就木鸡了..... PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; /**** ERROR: (26) file is not a database *****/ ROLLBACK; -- due to errors |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |